From 80c4b4c1785aab8053a27931c188c4311189d32d Mon Sep 17 00:00:00 2001 From: Razvan Cojocaru Date: Thu, 3 Mar 2016 15:58:00 +0200 Subject: [PATCH] libxc: Have xc_translate_foreign_address() set errno properly Currently it's possible for xc_translate_foreign_address() to fail and errno still be set to success. This patch fixes the issue. Based on the first half of Don Slutz' patch: http://lists.xen.org/archives/html/xen-devel/2014-03/msg03720.html Signed-off-by: Razvan Cojocaru Acked-by: Wei Liu --- tools/libxc/xc_pagetab.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/libxc/xc_pagetab.c b/tools/libxc/xc_pagetab.c index ec978904da..92eebd6882 100644 --- a/tools/libxc/xc_pagetab.c +++ b/tools/libxc/xc_pagetab.c @@ -88,8 +88,10 @@ unsigned long xc_translate_foreign_address(xc_interface *xch, uint32_t dom, return 0; memcpy(&pte, map + (paddr & (PAGE_SIZE - 1)), size); munmap(map, PAGE_SIZE); - if (!(pte & 1)) + if (!(pte & 1)) { + errno = EADDRNOTAVAIL; return 0; + } paddr = pte & 0x000ffffffffff000ull; if (level == 2 && (pte & PTE_PSE)) { mask = ((mask ^ ~-mask) >> 1); /* All bits below first set bit */ -- 2.30.2